<?php
class NewsController extends AppController{
    public $helpers = array('Html', 'Form');
    

    public function pull(){
        $this->loadModel('News');
        $this->loadModel('Category');
        $this->loadModel('Tags');
        $this->loadModel('Meta');
        $rss = new DOMDocument();
		$categories = $this->Category->find('all', array(
            'conditions' => array('Category.active' => 1)
        ));
        
        /**
        foreach($categories as $cat){
            // lay link rss tu category
            $rss->load($cat['Category']['rss']);
            $iterms = $rss->getElementsByTagName('item');
            foreach($iterms as $iterm){
                $a = array(
                    'title' => $iterm->getElementsByTagName('title')->item(0)->nodeValue,
                    'desc' => $iterm->getElementsByTagName('description')->item(0)->nodeValue,
                    'link' => $iterm->getElementsByTagName('link')->item(0)->nodeValue,
                );
                $aslug = parent::get_slug($a['title']);
                //pr($aslug);
                $anews = $this->News->find('first',array(
                    'conditions' => array('News.slug'=> $aslug)
                ));   
                pr($a['desc']);
            }
        }
        **/
  
        foreach($categories as $category){
            // Sử dụng DOM để lấy các trường từ RSS của vnexpress
            $rss->load($category['Category']['rss']);
            foreach ($rss->getElementsByTagName('item') as $node) {
                // Lấy từng tin theo tag 'item' của RSS
                $item_news = array(
                    'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
                    'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue,
                    'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
                    'date' => strtotime($node->getElementsByTagName('pubDate')->item(0)->nodeValue),
                );
                $slug = parent::get_slug($item_news['title']);
                
                // Kiểm tra slug của tin vừa lấy đã tồn tại chưa
                $news = $this->News->find('first', array(
                    'conditions' => array('News.slug' => $slug)
                ));
                
                // Chưa tồn tại thì lấy thêm content và image và lưu db
                if (!$news){
                    $file = parent::get_content_by_url($item_news['link']);
                    $contents = parent::get_content_by_tag($file, "div[class='fck_detail width_common']");
                    if ($contents == '') {
                        $contents = parent::get_content_by_tag($file, "div[id='article_content']");
                    }
                    // Lấy tất cả thành phần của news
                    $item_news['desc'] = parent::fix_desc($item_news['desc'], $item_news['link'], $slug);
                    $item_news['categoryId'] = $category['Category']['categoryId'];
                    $item_news['slug'] = $slug;
                    $item_news['content'] = parent::fix_content($contents);
                    $item_news['picture'] = parent::get_picture(parent::get_content_by_tag($item_news['desc'], "a[href='news/view?slug=$slug']"));
                    $item_news['desc'] = parent::remove_picture_in_desc($item_news['desc'], $slug, $item_news['picture']);
                    // Lưu vào db
                    if($item_news['picture'] != '' && $item_news['content'] != '' && $item_news['desc'] != ''){
                        $this->News->create();
                        $this->News->save($item_news);
                        //Thêm id new mới vào bảng meta-tag
						$item_meta['newsId'] = $this->News->getInsertID();//Get autoincrement ID after save
                        // Lấy nội dung chứa trong tag<> là phần chứa các thẻ tag
						$tag_content = parent::get_content_by_tag($file, "div[class='block_tag width_common space_bottom_20']");
                        // Lấy các thẻ tag trong nội dung vừa lấy và lưu vào mảng
						$tags = parent::get_tag_by_content($tag_content);
                        // Kiểm tra mảng tags vừa lấy xem đã tồn tại tag hay chưa,chưa thì save,rồi thì ko lấy nữa
						foreach($tags as $tag){
							if(!$this->Tags->is_existed_tag($tag)){
								$this->Tags->create();
								$item_tags['tags'] = $tag;
								$item_tags['slug'] = parent::get_slug($tag);
								$this->Tags->save($item_tags);
								$item_meta['tagsId'] = $this->Tags->getInsertID();
							}
							else{
								$item_meta['tagsId'] = $this->Tags->get_existed_tag_id($tag);
							}
							$this->Meta->create();
							$this->Meta->save($item_meta);
						}
                    }
                }
            }
        }
    }
    
    
    // Hiển thị new
    public function view(){
        parent::init();
        $this->loadModel('News');
        $this->loadModel('Meta');
		$obRtg = new Rating();
        $slug = $this->params['slug'];
        $new = $this->News->find('first', array(
            'conditions' => array('News.slug' => $slug)
        ));
        $tags = $this->Meta->find('all', array(
            'conditions' => array('Meta.newsId' => $new['News']['newsId'])
        ));
        if($new){ // Tồn tại tin tức thì mới view
            $this->set('new', $new);
            $this->set('slug',$new['Category']['slug']);
            $this->set('tags',$tags);
        }else{
            throw new NotFoundException(__('Invalid slug'));
        }
    }
	
    // Đánh giá theo 5 sao
	public function ratings(){
		$obRtg = new Rating();
		// if data from POST 'elm' and 'rate'
		if($this->request->isPost()){
			  // removes tags and external whitespaces from 'elm'
			  $this->request->data['elm'] = array_map('strip_tags', $this->request->data['elm']);
			  $this->request->data['elm'] = array_map('trim', $this->request->data['elm']);
			  if(!empty($this->request->data['rate'])) $this->request->data['rate'] = intval($this->request->data['rate']);
			  echo $obRtg->getRating($this->request->data['elm'], $this->request->data['rate']);
		}
		exit();
	}
    
	//Gợi ý cùng category
    public function suggest(){
        $this->loadModel('News');
		$id = $this->request->query['id'];// GET method
        $new = $this->News->find('first', array(
            'conditions' => array('News.newsId' => $id)
        ));
        // Đưa ra gợi ý với đầu vào là $new vừa đc request
		$suggested = $this->News->find('all', array(
            'conditions' => array('News.newsId IN' => parent::getSuggest($new))
        ));
		foreach($suggested as $suggest){
			echo '<li><a class="rp-thumb" href="'.$suggest['News']['slug'].'" title="'.$suggest['News']['title'].'"><img src="'.$suggest['News']['picture'].'" alt="'.$suggest['News']['title'].'" title="'.$suggest['News']['title'].'"></a><h4><a href="'.$suggest['News']['slug'].'" title="'.$suggest['News']['title'].'">'.$suggest['News']['title'].'</a></h4></li>';
		}
		exit();
    }
    // Gợi ý khác category
    public function relate(){
        $this->loadModel('News');
		$id = $this->request->query['id'];// GET method
        $new = $this->News->find('first', array(
            'conditions' => array('News.newsId' => $id)
        ));
		$related = $this->News->find('all', array(
            'conditions' => array('News.newsId IN' => parent::getRelate($new))
        ));
		foreach($related as $relate){
			echo '<li>
				<div class="post-thumb">
					<a href="'.$relate['News']['slug'].'" title="'.$relate['News']['title'].'" class=""><img src="'.$relate['News']['picture'].'" alt="'.$relate['News']['title'].'" title="'.$relate['News']['title'].'"></a>
				</div>
				<div class="post-content">
					<h4><a href="'.$relate['News']['slug'].'" title="'.$relate['News']['title'].'">'.$relate['News']['title'].'</a></h4>
					<span class="entry-meta">
						<a href="'.$relate['News']['slug'].'" title="'.date("H:i:s A", $relate['News']['date']).'" class="post-time"><time class="entry-date" datetime="'.$relate['News']['date'].'">'.date("F j, Y, g:i A", $relate['News']['date']).'</time></a><span class="sep category-sep"> | </span><span class="post-category"><a href="'.$this->base.'/tin-tuc/'.$relate['Category']['slug'].'" title="Xem toàn bộ bài viết" rel="tag">'.$relate['Category']['category'].'</a></span>
					</span>
				</div>
			</li>';
		}
		exit();
    }
}